perm filename PRECOM.AUX[SYS,HE] blob sn#009299 filedate 1972-12-06 generic text, type T, neo UTF8
COMMENT ⊗   VALID 00005 PAGES 
RECORD PAGE   DESCRIPTION
 00001 00001
 00002 00002	 ALTERNATE PDP-10 MNEMONICS.
 00004 00003	 FETCH LINK FROM NODE.
 00009 00004	 PROPERTY-TYPE MACROS.
 00010 00005	 SAIL LIKE SUBROUTINE LINKAGE.
 00012 ENDMK
⊗;
; ALTERNATE PDP-10 MNEMONICS.
	OPDEF LIP	[HLR]
	OPDEF LAP	[HRR]
	OPDEF DIP	[HRLM]
	OPDEF DAP	[HRRM]
	
	OPDEF LIPZ	[HLRZ]
	OPDEF LAPZ	[HRRZ]
	OPDEF DIPZ	[HRLZM]
	OPDEF DAPZ	[HRRZM]
	
	OPDEF SLIP	[HLL]
	OPDEF SLAP	[HRL]
	OPDEF STIP	[HLLM]
	OPDEF STAP	[HLRM]
	
	OPDEF SLIPZ	[HLLZ]
	OPDEF SLAPZ	[HRLZ]
	OPDEF STIPZ	[HLLZM]
	OPDEF STAPZ	[HLRZM]
	
	OPDEF ZIP	[HRRZS]
	OPDEF ZAP	[HLLZS]
	OPDEF WIP	[HRROS]
	OPDEF WAP	[HRRZS]
	
	OPDEF NIP	[HLRE]
	OPDEF NAP	[HRRE]
	OPDEF NIM 	[HRREI]
	OPDEF LIM    	[HRRI]
	OPDEF SLIM   	[HRLI]
	
	OPDEF CAR	[HLRZ]
	OPDEF CDR	[HRRZ]

	OPDEF LAC	[MOVE]
	OPDEF DAC	[MOVEM]
 
	OPDEF GO 	[JRST]
	OPDEF LIMZ	[MOVEI]
	OPDEF SLIMZ	[MOVSI]

	OPDEF FIXX	[FIX 233000]
	OPDEF FLOAT	[FSC 233]
	DEFINE FLIM(AC,R)<HRLEI AC,(<R>)>;FLOATING IMMEDIATE.

	OPDEF LACN	[MOVN]
	OPDEF DACN	[MOVNM]
	OPDEF LACM	[MOVM]
	OPDEF DACM	[MOVMM]
; FETCH LINK FROM NODE.

   DEFINE PART  (Q,E)<NIP Q,-3(E)>↔DEFINE COPART(Q,E)<NAP Q,-3(E)>
   DEFINE EXTENT(Q,E)<CAR Q,-2(E)>↔DEFINE LOCOR (Q,E)<CDR Q,-2(E)>
   DEFINE PNAME (Q,E)<CAR Q,-1(E)>↔DEFINE DISK  (Q,E)<CDR Q,-1(E)>
   DEFINE TYPE  (Q,E)<CAR Q, 0(E)>↔DEFINE SERIAL(Q,E)<CDR Q, 0(E)>
   DEFINE NFACE (Q,E)<CAR Q, 1(E)>↔DEFINE PFACE (Q,E)<CDR Q, 1(E)>
   DEFINE NED   (Q,E)<CAR Q, 2(E)>↔DEFINE PED   (Q,E)<CDR Q, 2(E)>
   DEFINE NVT   (Q,E)<CAR Q, 3(E)>↔DEFINE PVT   (Q,E)<CDR Q, 3(E)>
   DEFINE NCW   (Q,E)<CAR Q, 4(E)>↔DEFINE PCW   (Q,E)<CDR Q, 4(E)>
   DEFINE NCCW  (Q,E)<CAR Q, 5(E)>↔DEFINE PCCW  (Q,E)<CDR Q, 5(E)>
   DEFINE FCNT  (Q,E)<CAR Q, 4(E)>↔DEFINE VCNT  (Q,E)<CDR Q, 4(E)>
   DEFINE ECNT  (Q,E)<CAR Q, 5(E)>↔DEFINE PCNT  (Q,E)<CDR Q, 5(E)>
   DEFINE NBODY (Q,E)<CAR Q, 6(E)>↔DEFINE PBODY (Q,E)<CDR Q, 6(E)>
   DEFINE NUF   (Q,E)<CAR Q, 7(E)>↔DEFINE PUF   (Q,E)<CDR Q, 7(E)>
   DEFINE NCNT  (Q,E)<NIP Q, 2(E)>↔DEFINE TJOINT(Q,E)<CDR Q, 1(E)>
   DEFINE X1DC  (Q,E)<NIP Q, 8(E)>↔DEFINE Y1DC  (Q,E)<NAP Q, 8(E)>
   DEFINE X2DC  (Q,E)<NIP Q, 9(E)>↔DEFINE Y2DC  (Q,E)<NAP Q, 9(E)>
   DEFINE XDC   (Q,E)<HLLE Q,1(E)>↔DEFINE YDC   (Q,E)<HLLE Q,2(E)>


; STORE LINK INTO NODE.

   DEFINE PART. (Q,E)<DIP Q,-3(E)>↔DEFINE COPAR.(Q,E)<DAP Q,-3(E)>
   DEFINE EXTEN.(Q,E)<DIP Q,-2(E)>↔DEFINE LOCOR.(Q,E)<DAP Q,-2(E)>
   DEFINE PNAME.(Q,E)<DIP Q,-1(E)>↔DEFINE DISK. (Q,E)<DAP Q,-1(E)>
   DEFINE TYPE. (Q,E)<DIP Q, 0(E)>↔DEFINE SERIA.(Q,E)<DAP Q, 0(E)>
   DEFINE NFACE.(Q,E)<DIP Q, 1(E)>↔DEFINE PFACE.(Q,E)<DAP Q, 1(E)>
   DEFINE NED.  (Q,E)<DIP Q, 2(E)>↔DEFINE PED.  (Q,E)<DAP Q, 2(E)>
   DEFINE NVT.  (Q,E)<DIP Q, 3(E)>↔DEFINE PVT.  (Q,E)<DAP Q, 3(E)>
   DEFINE NCW.. (Q,E)<DIP Q, 4(E)>↔DEFINE PCW.. (Q,E)<DAP Q, 4(E)>
   DEFINE NCCW..(Q,E)<DIP Q, 5(E)>↔DEFINE PCCW..(Q,E)<DAP Q, 5(E)>
   DEFINE FCNT. (Q,E)<DIP Q, 4(E)>↔DEFINE VCNT. (Q,E)<DAP Q, 4(E)>
   DEFINE ECNT. (Q,E)<DIP Q, 5(E)>↔DEFINE PCNT. (Q,E)<DAP Q, 5(E)>
   DEFINE NBODY.(Q,E)<DIP Q, 6(E)>↔DEFINE PBODY.(Q,E)<DAP Q, 6(E)>
   DEFINE NUF.  (Q,E)<DIP Q, 7(E)>↔DEFINE PUF.  (Q,E)<DAP Q, 7(E)>
   DEFINE NCNT. (Q,E)<DIP Q, 2(E)>↔DEFINE TJOIN.(Q,E)<DAP Q, 1(E)>
   DEFINE X1DC. (Q,E)<DIP Q, 8(E)>↔DEFINE Y1DC. (Q,E)<DAP Q, 8(E)>
   DEFINE X2DC. (Q,E)<DIP Q, 9(E)>↔DEFINE Y2DC. (Q,E)<DAP Q, 9(E)>
   DEFINE XDC.  (Q,E)<STIP Q,1(E)>↔DEFINE YDC.  (Q,E)<STIP Q,2(E)>

; NAMES OF NODE DATA WORDS.

	↓AA ←← ↓XWC ←← -3
	↓BB ←← ↓YWC ←← -2
	↓CC ←← ↓ZWC ←← -1
	↓QQ ←← 3
	↓KK ←← 4
	↓XPP ←← 4↔	↓YPP ←← 5↔	↓ZPP ←← 6
	↓IX←←0↔ 	↓IY←←1↔ 	↓IZ←←2
	↓JX←←3↔ 	↓JY←←4↔ 	↓JZ←←5
	↓KX←←6↔ 	↓KY←←7↔ 	↓KZ←←8
; PROPERTY-TYPE MACROS.

	DEFINE MARK(Q,BITS){
	SLIMZ(BITS) ↔ IORM (Q)}

	DEFINE MARKZ(Q,BITS){
	SLIMZ(BITS) ↔ ANDCAM (Q)}

	DEFINE TEST(Q,BITS){
	LAC(Q) ↔ TLNN(BITS)}

	DEFINE TESTZ(Q,BITS){
	LAC(Q) ↔ TLNE(BITS)}

; PROPERTY-TYPE BITS.

	↓BBIT ←← 1B17
	↓FBIT ←← 1B16
	↓EBIT ←← 1B15
	↓VBIT ←← 1B14

	↓PZZ ←← 1B9
	↓NZZ ←← 1B10

	↓FOLDED ←← 1B11
	↓VISIBLE ←← 1B12
	↓POTENT ←← 1B13
	↓DARKEN ←← 1B3

	↓NORTH ←← 1B5
	↓SOUTH ←← 1B6
	↓EAST  ←← 1B7
	↓WEST  ←← 1B8
	↓NSEW  ←← 17B8

	DEFINE HIDE(Q){
	SLIMZ(3B13)↔ANDCAM(Q)}

	↓TEMPORARY ←← 1B2
; SAIL LIKE SUBROUTINE LINKAGE.
	↓P ←← 17
	DEFINE SUBR(NAME){INTERN NAME↔↓NAME: ;}
	DEFINE CALL(NAME,X1,X2,X3,X4){
	IFDIF <> <X1> {PUSH P,X1
	IFDIF <> <X2> {PUSH P,X2
	IFDIF <> <X3> {PUSH P,X3
	IFDIF <> <X4> {PUSH P,X4}}}}
	PUSHJ P,NAME}
;ARGUMENT FETCH.
	FOR @$ I←1,4{
	DEFINE ARG$I	<-I(17)>}
;CALL AND RETURN VALUE.
	DEFINE SETQ (VAR,LIST){
	CALL(LIST)
	DAC 1,VAR}
;RETURN N-ARGUMENTS  & OPTIONAL RESULT.
	FOR @$ I←1,4{
	DEFINE RET$I(R){IFDIF<><R><LAC 1,R>↔GO RET$I$.}
	↓RET$I$.: SUB P,[XWD I+1,I+1]↔GO @I+1(17)}
	DEFINE RET0(R){IFDIF<><R><LAC 1,R>↔POPJ P,}
;ACCUMULATOR TRANSPARENCY.
	FOR @$ I←0,17{↓AC$I: 0↔}
	DEFINE PUSHAC{PUSH 17,12↔PUSH 17,16}
	DEFINE POPAC {POP  17,16↔POP  17,12}
	DEFINE SAVAC $(N){LAC[XWD 2,AC2]↔BLT AC$N}
	DEFINE GETAC (N){LAC[XWD AC2,2]↔BLT N}
;MACROS FOR ALLOCATING AND NAMING WORKING SPACE.
	DEFINE ACCUMULATORS(LIST){ACPTR←←2
	FOR AC⊂(LIST)<AC←ACPTR↔ACPTR←←ACPTR+1↔>}
	DEFINE DECLARE (LIST){
	FOR VARNAM⊂(LIST)<VARNAM: 0↔>}
;FATAL ERROR MESSAGE.
	DEFINE FATAL(STR){PUSHJ P,FATAL.↔ASCIZ/STR/}
FATAL.:	OUTSTR[ASCIZ/
FATAL - /]↔OUTSTR @(17)↔INCHRW↔GO .-1↔LIT